home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Icon 8.1 / msm-2 / iconc.sit / parse.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-19  |  52.7 KB  |  1,930 lines  |  [TEXT/MPS ]

  1. # define IDENT 257
  2. # define INTLIT 258
  3. # define REALLIT 259
  4. # define STRINGLIT 260
  5. # define CSETLIT 261
  6. # define EOFX 262
  7. # define BREAK 263
  8. # define BY 264
  9. # define CASE 265
  10. # define CREATE 266
  11. # define DEFAULT 267
  12. # define DO 268
  13. # define DYNAMIC 269
  14. # define ELSE 270
  15. # define END 271
  16. # define EVERY 272
  17. # define FAIL 273
  18. # define GLOBAL 274
  19. # define IF 275
  20. # define INITIAL 276
  21. # define INVOCABLE 277
  22. # define LINK 278
  23. # define LOCAL 279
  24. # define NEXT 280
  25. # define NOT 281
  26. # define OF 282
  27. # define PROCEDURE 283
  28. # define RECORD 284
  29. # define REPEAT 285
  30. # define RETURN 286
  31. # define STATIC 287
  32. # define SUSPEND 288
  33. # define THEN 289
  34. # define TO 290
  35. # define UNTIL 291
  36. # define WHILE 292
  37. # define BANG 293
  38. # define MOD 294
  39. # define AUGMOD 295
  40. # define AND 296
  41. # define AUGAND 297
  42. # define STAR 298
  43. # define AUGSTAR 299
  44. # define INTER 300
  45. # define AUGINTER 301
  46. # define PLUS 302
  47. # define AUGPLUS 303
  48. # define UNION 304
  49. # define AUGUNION 305
  50. # define MINUS 306
  51. # define AUGMINUS 307
  52. # define DIFF 308
  53. # define AUGDIFF 309
  54. # define DOT 310
  55. # define SLASH 311
  56. # define AUGSLASH 312
  57. # define ASSIGN 313
  58. # define SWAP 314
  59. # define NMLT 315
  60. # define AUGNMLT 316
  61. # define REVASSIGN 317
  62. # define REVSWAP 318
  63. # define SLT 319
  64. # define AUGSLT 320
  65. # define SLE 321
  66. # define AUGSLE 322
  67. # define NMLE 323
  68. # define AUGNMLE 324
  69. # define NMEQ 325
  70. # define AUGNMEQ 326
  71. # define SEQ 327
  72. # define AUGSEQ 328
  73. # define EQUIV 329
  74. # define AUGEQUIV 330
  75. # define NMGT 331
  76. # define AUGNMGT 332
  77. # define NMGE 333
  78. # define AUGNMGE 334
  79. # define SGT 335
  80. # define AUGSGT 336
  81. # define SGE 337
  82. # define AUGSGE 338
  83. # define QMARK 339
  84. # define AUGQMARK 340
  85. # define AT 341
  86. # define AUGAT 342
  87. # define BACKSLASH 343
  88. # define CARET 344
  89. # define AUGCARET 345
  90. # define BAR 346
  91. # define CONCAT 347
  92. # define AUGCONCAT 348
  93. # define LCONCAT 349
  94. # define AUGLCONCAT 350
  95. # define TILDE 351
  96. # define NMNE 352
  97. # define AUGNMNE 353
  98. # define SNE 354
  99. # define AUGSNE 355
  100. # define NEQUIV 356
  101. # define AUGNEQUIV 357
  102. # define LPAREN 358
  103. # define RPAREN 359
  104. # define PCOLON 360
  105. # define COMMA 361
  106. # define MCOLON 362
  107. # define COLON 363
  108. # define SEMICOL 364
  109. # define LBRACK 365
  110. # define RBRACK 366
  111. # define LBRACE 367
  112. # define RBRACE 368
  113.  
  114. # line 143 "expanded.g"
  115. #include "::h:gsupport.h"
  116. #include "tlex.h"
  117. #include "trans.h"
  118. #include "tsym.h"
  119. #include "tree.h"
  120. #include "tcode.h" 
  121. #include "tproto.h"
  122. #define YYSTYPE nodeptr
  123. #define YYMAXDEPTH 500
  124. int idflag;
  125.  
  126.  
  127.  
  128. #define yyclearin yychar = -1
  129. #define yyerrok yyerrflag = 0
  130. extern int yychar;
  131. extern int yyerrflag;
  132. #ifndef YYMAXDEPTH
  133. #define YYMAXDEPTH 150
  134. #endif
  135. #ifndef YYSTYPE
  136. #define YYSTYPE int
  137. #endif
  138. YYSTYPE yylval, yyval;
  139. # define YYERRCODE 256
  140.  
  141. # line 424 "expanded.g"
  142.  
  143. int yyexca[] ={
  144. -1, 0,
  145.     262, 2,
  146.     274, 2,
  147.     277, 2,
  148.     278, 2,
  149.     283, 2,
  150.     284, 2,
  151.     -2, 0,
  152. -1, 1,
  153.     0, -1,
  154.     -2, 0,
  155. -1, 20,
  156.     271, 41,
  157.     364, 43,
  158.     -2, 0,
  159. -1, 86,
  160.     264, 43,
  161.     268, 43,
  162.     270, 43,
  163.     282, 43,
  164.     289, 43,
  165.     290, 43,
  166.     294, 43,
  167.     295, 43,
  168.     297, 43,
  169.     299, 43,
  170.     301, 43,
  171.     303, 43,
  172.     305, 43,
  173.     307, 43,
  174.     309, 43,
  175.     312, 43,
  176.     313, 43,
  177.     314, 43,
  178.     315, 43,
  179.     316, 43,
  180.     317, 43,
  181.     318, 43,
  182.     319, 43,
  183.     320, 43,
  184.     321, 43,
  185.     322, 43,
  186.     323, 43,
  187.     324, 43,
  188.     326, 43,
  189.     328, 43,
  190.     330, 43,
  191.     331, 43,
  192.     332, 43,
  193.     333, 43,
  194.     334, 43,
  195.     335, 43,
  196.     336, 43,
  197.     337, 43,
  198.     338, 43,
  199.     340, 43,
  200.     342, 43,
  201.     345, 43,
  202.     348, 43,
  203.     350, 43,
  204.     353, 43,
  205.     355, 43,
  206.     357, 43,
  207.     359, 43,
  208.     360, 43,
  209.     361, 43,
  210.     362, 43,
  211.     363, 43,
  212.     364, 43,
  213.     366, 43,
  214.     368, 43,
  215.     -2, 0,
  216. -1, 87,
  217.     359, 43,
  218.     361, 43,
  219.     -2, 0,
  220. -1, 88,
  221.     364, 43,
  222.     368, 43,
  223.     -2, 0,
  224. -1, 89,
  225.     361, 43,
  226.     366, 43,
  227.     -2, 0,
  228. -1, 96,
  229.     264, 43,
  230.     268, 43,
  231.     270, 43,
  232.     282, 43,
  233.     289, 43,
  234.     290, 43,
  235.     294, 43,
  236.     295, 43,
  237.     297, 43,
  238.     299, 43,
  239.     301, 43,
  240.     303, 43,
  241.     305, 43,
  242.     307, 43,
  243.     309, 43,
  244.     312, 43,
  245.     313, 43,
  246.     314, 43,
  247.     315, 43,
  248.     316, 43,
  249.     317, 43,
  250.     318, 43,
  251.     319, 43,
  252.     320, 43,
  253.     321, 43,
  254.     322, 43,
  255.     323, 43,
  256.     324, 43,
  257.     326, 43,
  258.     328, 43,
  259.     330, 43,
  260.     331, 43,
  261.     332, 43,
  262.     333, 43,
  263.     334, 43,
  264.     335, 43,
  265.     336, 43,
  266.     337, 43,
  267.     338, 43,
  268.     340, 43,
  269.     342, 43,
  270.     345, 43,
  271.     348, 43,
  272.     350, 43,
  273.     353, 43,
  274.     355, 43,
  275.     357, 43,
  276.     359, 43,
  277.     360, 43,
  278.     361, 43,
  279.     362, 43,
  280.     363, 43,
  281.     364, 43,
  282.     366, 43,
  283.     368, 43,
  284.     -2, 0,
  285. -1, 97,
  286.     264, 43,
  287.     268, 43,
  288.     270, 43,
  289.     282, 43,
  290.     289, 43,
  291.     290, 43,
  292.     294, 43,
  293.     295, 43,
  294.     297, 43,
  295.     299, 43,
  296.     301, 43,
  297.     303, 43,
  298.     305, 43,
  299.     307, 43,
  300.     309, 43,
  301.     312, 43,
  302.     313, 43,
  303.     314, 43,
  304.     315, 43,
  305.     316, 43,
  306.     317, 43,
  307.     318, 43,
  308.     319, 43,
  309.     320, 43,
  310.     321, 43,
  311.     322, 43,
  312.     323, 43,
  313.     324, 43,
  314.     326, 43,
  315.     328, 43,
  316.     330, 43,
  317.     331, 43,
  318.     332, 43,
  319.     333, 43,
  320.     334, 43,
  321.     335, 43,
  322.     336, 43,
  323.     337, 43,
  324.     338, 43,
  325.     340, 43,
  326.     342, 43,
  327.     345, 43,
  328.     348, 43,
  329.     350, 43,
  330.     353, 43,
  331.     355, 43,
  332.     357, 43,
  333.     359, 43,
  334.     360, 43,
  335.     361, 43,
  336.     362, 43,
  337.     363, 43,
  338.     364, 43,
  339.     366, 43,
  340.     368, 43,
  341.     -2, 0,
  342. -1, 111,
  343.     271, 41,
  344.     364, 43,
  345.     -2, 0,
  346. -1, 118,
  347.     271, 41,
  348.     364, 43,
  349.     -2, 0,
  350. -1, 183,
  351.     361, 43,
  352.     366, 43,
  353.     -2, 0,
  354. -1, 184,
  355.     361, 43,
  356.     -2, 0,
  357. -1, 185,
  358.     359, 43,
  359.     361, 43,
  360.     -2, 0,
  361. -1, 312,
  362.     359, 43,
  363.     361, 43,
  364.     366, 43,
  365.     -2, 0,
  366. -1, 314,
  367.     364, 43,
  368.     368, 43,
  369.     -2, 0,
  370. -1, 336,
  371.     361, 43,
  372.     368, 43,
  373.     -2, 0,
  374.     };
  375. # define YYNPROD 204
  376. # define YYLAST 743
  377. int yyact[]={
  378.  
  379.     38,    84,    91,    92,    93,    94,   336,    86,   186,    99,
  380.     83,   360,   313,   335,   119,   359,   102,    95,   342,    98,
  381.    356,   312,   312,    20,    85,    51,   330,   315,   314,   103,
  382.     96,   119,    97,   118,   229,   101,   100,    56,   347,   119,
  383.     90,   119,    59,   361,    62,   108,    58,   337,    70,   312,
  384.     64,   311,    57,   312,    55,    60,   185,   229,   229,   353,
  385.    327,   107,   106,   183,   346,   184,   325,   233,   110,    65,
  386.    169,    67,   170,    69,   215,   120,   171,   182,   173,   317,
  387.    174,   351,   172,    71,   357,    50,   119,    73,    61,   119,
  388.     52,    53,   326,    54,   219,    63,    66,   117,    68,   328,
  389.     72,   232,    87,   333,   329,   334,   332,   119,   362,    89,
  390.    218,    88,   306,    38,    84,    91,    92,    93,    94,   321,
  391.     86,    41,    99,    83,   354,   181,   320,   180,   179,   102,
  392.     95,    19,    98,   105,   319,   178,   316,    85,    51,   175,
  393.    322,   176,   103,    96,   318,    97,   310,   119,   101,   100,
  394.     56,    30,   177,    90,   119,    59,    18,    62,   119,    58,
  395.      3,    70,   119,    64,   119,    57,    37,    55,    60,   116,
  396.     28,    24,    34,    29,    25,    27,   113,   104,   331,   114,
  397.    352,     2,    65,   307,    67,    17,    69,   115,    82,    81,
  398.     80,    79,    78,    23,    36,    77,    71,    76,    50,    75,
  399.     73,    61,    74,    52,    53,    49,    54,    46,    63,    66,
  400.     47,    68,   213,    72,    42,    87,    38,    84,    91,    92,
  401.     93,    94,    89,    86,    88,    99,    83,    40,   112,   323,
  402.    109,   111,   102,    95,    33,    98,    12,   234,    32,    21,
  403.     85,    51,    26,    22,    10,   103,    96,     9,    97,     8,
  404.      7,   101,   100,    56,     6,     5,    90,     1,    59,     0,
  405.     62,     0,    58,     0,    70,     0,    64,     0,    57,     0,
  406.     55,    60,     0,     0,     0,   274,   275,     0,   211,     0,
  407.      0,     0,     0,   231,   236,    65,   240,    67,   235,    69,
  408.    237,   239,   222,   223,   224,   225,   226,   227,   228,    71,
  409.    230,    50,   217,    73,    61,     0,    52,    53,   238,    54,
  410.      0,    63,    66,     0,    68,     0,    72,     0,    87,     0,
  411.     84,    91,    92,    93,    94,    89,    86,    88,    99,    83,
  412.     44,     0,     0,     0,     0,   102,    95,     0,    98,     0,
  413.      0,     0,     0,    85,    51,     0,    45,     0,   103,    96,
  414.      0,    97,     0,     0,   101,   100,    56,     0,     0,    90,
  415.     31,    59,     0,    62,     0,    58,     0,    70,     0,    64,
  416.      0,    57,    13,    55,    60,    15,    14,     0,   305,     4,
  417.      0,    16,    11,   296,   297,   298,   299,   300,    65,   339,
  418.     67,    13,    69,     0,    15,    14,   304,     0,   309,     0,
  419.     16,    11,    71,     0,    50,   214,    73,    61,     0,    52,
  420.     53,   324,    54,     0,    63,    66,     0,    68,   153,    72,
  421.    363,    87,     0,   134,     0,   151,    35,   131,    89,   132,
  422.     88,   129,     0,   128,     0,   130,     0,   127,     0,     0,
  423.    133,   122,   121,     0,   141,   124,   123,     0,   148,   165,
  424.    147,   348,   140,   159,   136,   158,   144,   164,   137,   161,
  425.    139,   155,   138,   167,   146,   163,   145,   162,   150,   157,
  426.    152,   156,    39,   135,    43,     0,   125,     0,   126,     0,
  427.    154,   142,     0,   149,     0,   143,   166,     0,   160,     0,
  428.    168,     0,   212,     0,   216,     0,     0,     0,     0,     0,
  429.    290,   291,   220,   221,     0,     0,     0,    48,     0,     0,
  430.      0,   340,   341,     0,   343,   344,   345,    35,   292,   293,
  431.    294,   295,     0,     0,    35,     0,   349,     0,     0,     0,
  432.      0,     0,     0,     0,     0,     0,     0,   355,     0,     0,
  433.      0,     0,     0,     0,     0,     0,   358,     0,     0,     0,
  434.      0,     0,     0,     0,     0,   355,   364,   365,   187,   188,
  435.    189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
  436.    199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
  437.    209,   210,     0,     0,     0,     0,     0,     0,     0,     0,
  438.    308,     0,     0,   241,   242,   243,   244,   245,   246,   247,
  439.    248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
  440.    258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
  441.    268,   269,   270,   271,   272,   273,     0,     0,     0,     0,
  442.    276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
  443.    286,   287,   288,   289,     0,     0,     0,     0,     0,     0,
  444.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  445.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  446.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  447.      0,     0,     0,     0,     0,     0,     0,     0,   301,   302,
  448.    303,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  449.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  450.      0,     0,     0,     0,     0,     0,     0,     0,   338,     0,
  451.    216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  452.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  453.      0,     0,   350 };
  454. int yypact[]={
  455.  
  456.    -96, -1000,   117, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  457.  -1000,  -101,  -233, -1000,   -86,   -87,  -106,    98, -1000, -1000,
  458.    -40,  -124,  -299, -1000, -1000, -1000,  -300, -1000, -1000,  -318,
  459.  -1000, -1000,  -290,  -100,  -174,  -331,  -207,  -264, -1000, -1000,
  460.    128, -1000,   134,  -277,  -226,  -159, -1000,  -216, -1000,  -302,
  461.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  462.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  463.     63,    63,    63,    63, -1000, -1000, -1000, -1000, -1000, -1000,
  464.  -1000, -1000, -1000,   -40, -1000, -1000,   -40,   -40,   -40,   -40,
  465.   -163, -1000, -1000, -1000, -1000, -1000,   -40,   -40,   -40,   -40,
  466.    -40,   -40,   -40,   -40,  -303, -1000,   -86,   -87,  -157,  -291,
  467.   -124,   -40,  -124,   -40, -1000, -1000, -1000, -1000,   -40,    63,
  468.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  469.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  470.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  471.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  472.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  473.     63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
  474.     63,    63,    63,   -40,  -256,   -40,  -111, -1000, -1000, -1000,
  475.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  476.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  477.  -1000,  -207, -1000,  -308, -1000,  -356,  -336,  -339, -1000, -1000,
  478.  -1000, -1000,  -132,  -210,  -138,  -134,  -142,  -149,  -207,  -117,
  479.  -1000, -1000, -1000,  -124,  -293,  -303,  -179,  -304,  -265, -1000,
  480.   -264, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  481.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  482.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  483.  -1000, -1000, -1000, -1000,  -160, -1000,  -277,  -277,  -277,  -277,
  484.   -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,
  485.   -226,  -226,  -159,  -159,  -159,  -159, -1000, -1000, -1000, -1000,
  486.  -1000, -1000, -1000, -1000,  -340,  -257, -1000,  -355, -1000,  -312,
  487.  -1000, -1000,   -40, -1000,   -40, -1000,   -40,   -40,  -349,   -40,
  488.    -40,   -40, -1000,  -295,  -327, -1000, -1000, -1000, -1000,    63,
  489.  -1000,   -40, -1000, -1000, -1000, -1000,   -40, -1000, -1000, -1000,
  490.   -207,  -189,  -143,  -207,  -207,  -207, -1000,  -346, -1000,  -282,
  491.  -1000,   -40,  -353, -1000,  -320,  -255, -1000, -1000,  -207, -1000,
  492.   -143,   -40,   -40, -1000,  -207,  -207 };
  493. int yypgo[]={
  494.  
  495.      0,   257,   181,   255,   254,   250,   249,   247,   244,   243,
  496.    193,   242,   175,   239,   177,   238,   237,   236,   234,   231,
  497.    172,   230,   229,   228,   194,   405,   166,   472,   227,   121,
  498.    214,   474,   330,   346,   207,   210,   507,   205,   202,   199,
  499.    197,   195,   192,   191,   190,   189,   188,   212,    74,   183,
  500.    180,    59,   178 };
  501. int yyr1[]={
  502.  
  503.      0,     1,     2,     2,     3,     3,     3,     3,     3,     7,
  504.      9,     9,    10,    10,     8,    11,    11,    12,    12,    12,
  505.     13,     6,    15,     4,    16,    16,     5,    21,    17,    22,
  506.     22,    22,    14,    14,    18,    18,    23,    23,    23,    19,
  507.     19,    20,    20,    25,    25,    24,    24,    26,    26,    27,
  508.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  509.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  510.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  511.     27,    27,    28,    28,    28,    29,    29,    30,    30,    30,
  512.     30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
  513.     30,    30,    31,    31,    31,    32,    32,    32,    32,    32,
  514.     33,    33,    33,    33,    33,    34,    34,    35,    35,    35,
  515.     35,    36,    36,    36,    36,    36,    36,    36,    36,    36,
  516.     36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
  517.     36,    36,    36,    36,    36,    36,    37,    37,    37,    37,
  518.     37,    37,    37,    37,    37,    37,    37,    37,    37,    37,
  519.     37,    37,    37,    37,    37,    37,    37,    37,    37,    43,
  520.     43,    44,    44,    45,    45,    46,    40,    40,    40,    40,
  521.     41,    41,    42,    50,    50,    51,    51,    47,    47,    49,
  522.     49,    38,    38,    38,    38,    39,    52,    52,    52,    48,
  523.     48,     1,     5,    24 };
  524. int yyr2[]={
  525.  
  526.      0,     5,     0,     4,     3,     3,     3,     3,     3,     5,
  527.      2,     7,     3,     3,     5,     2,     7,     3,     3,     7,
  528.      1,     7,     1,    13,     1,     3,    13,     1,    13,     1,
  529.      3,     7,     3,     7,     1,     9,     3,     3,     3,     1,
  530.      7,     1,     7,     1,     2,     2,     7,     2,     7,     2,
  531.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  532.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  533.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  534.      7,     7,     2,     7,    11,     2,     7,     2,     7,     7,
  535.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  536.      7,     7,     2,     7,     7,     2,     7,     7,     7,     7,
  537.      2,     7,     7,     7,     7,     2,     7,     2,     7,     7,
  538.      7,     2,     5,     5,     5,     5,     5,     5,     5,     5,
  539.      5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
  540.      5,     5,     5,     5,     5,     5,     2,     2,     2,     2,
  541.      2,     2,     2,     2,     2,     5,     3,     3,     5,     7,
  542.      7,     7,     9,     7,     9,     9,     7,     5,     5,     5,
  543.      9,     5,     9,     5,     9,     5,     3,     5,     5,     9,
  544.      9,    13,    13,     2,     7,     7,     7,     3,     7,     3,
  545.      7,     3,     3,     3,     3,    13,     3,     3,     3,     2,
  546.      7,     6,     8,     2 };
  547. int yychk[]={
  548.  
  549.  -1000,    -1,    -2,   256,   262,    -3,    -4,    -5,    -6,    -7,
  550.     -8,   284,   -17,   274,   278,   277,   283,    -2,   257,   364,
  551.    256,   -13,    -9,   -10,   257,   260,   -11,   -12,   257,   260,
  552.    257,   262,   -15,   -18,   -20,   -25,   -24,   -26,   256,   -27,
  553.    -28,   -29,   -30,   -31,   -32,   -33,   -34,   -35,   -36,   -37,
  554.    341,   281,   346,   347,   349,   310,   293,   308,   302,   298,
  555.    311,   344,   300,   351,   306,   325,   352,   327,   354,   329,
  556.    304,   339,   356,   343,   -38,   -39,   -40,   -41,   -42,   -43,
  557.    -44,   -45,   -46,   266,   257,   280,   263,   358,   367,   365,
  558.    296,   258,   259,   260,   261,   273,   286,   288,   275,   265,
  559.    292,   291,   272,   285,   -14,   257,   361,   361,   363,   -21,
  560.    358,   -19,   -23,   276,   279,   287,   269,   271,   364,   296,
  561.    339,   314,   313,   318,   317,   348,   350,   309,   305,   303,
  562.    307,   299,   301,   312,   295,   345,   326,   330,   334,   332,
  563.    324,   316,   353,   357,   328,   338,   336,   322,   320,   355,
  564.    340,   297,   342,   290,   346,   327,   337,   335,   321,   319,
  565.    354,   325,   333,   331,   323,   315,   352,   329,   356,   347,
  566.    349,   302,   308,   304,   306,   298,   300,   311,   294,   344,
  567.    343,   341,   293,   365,   367,   358,   310,   -36,   -36,   -36,
  568.    -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
  569.    -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
  570.    -36,   -24,   -25,   -47,   -25,   -48,   -25,   -47,   273,   257,
  571.    -25,   -25,   -24,   -24,   -24,   -24,   -24,   -24,   -24,   361,
  572.    -10,   -12,   258,   358,   -16,   -14,   -20,   -14,   -24,   -20,
  573.    -26,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  574.    -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  575.    -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  576.    -27,   -27,   -27,   -27,   -29,   -29,   -31,   -31,   -31,   -31,
  577.    -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,
  578.    -32,   -32,   -33,   -33,   -33,   -33,   -34,   -34,   -34,   -34,
  579.    -34,   -36,   -36,   -36,   -47,   -24,   368,   -49,   -25,   -47,
  580.    257,   359,   361,   368,   364,   366,   268,   289,   282,   268,
  581.    268,   268,   257,   -22,   -14,   359,   271,   364,   364,   264,
  582.    366,   -52,   363,   360,   362,   368,   361,   359,   -25,   -48,
  583.    -24,   -24,   367,   -24,   -24,   -24,   359,   365,   -29,   -24,
  584.    -25,   270,   -50,   -51,   267,   -24,   366,   366,   -24,   368,
  585.    364,   363,   363,   -51,   -24,   -24 };
  586. int yydef[]={
  587.  
  588.     -2,    -2,     0,     2,     1,     3,     4,     5,     6,     7,
  589.      8,     0,     0,    20,     0,     0,     0,     0,    22,    34,
  590.     -2,     0,     9,    10,    12,    13,    14,    15,    17,    18,
  591.     27,   201,     0,    39,     0,     0,    44,    45,   203,    47,
  592.     49,    82,    85,    87,   102,   105,   110,   115,   117,   121,
  593.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  594.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  595.      0,     0,     0,     0,   146,   147,   148,   149,   150,   151,
  596.    152,   153,   154,     0,   156,   157,    -2,    -2,    -2,    -2,
  597.      0,   191,   192,   193,   194,   176,    -2,    -2,     0,     0,
  598.      0,     0,     0,     0,    21,    32,     0,     0,     0,     0,
  599.     24,    -2,     0,     0,    36,    37,    38,   202,    -2,     0,
  600.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  601.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  602.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  603.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  604.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  605.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  606.      0,     0,     0,    -2,    -2,    -2,     0,   122,   123,   124,
  607.    125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
  608.    135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
  609.    145,   155,   158,     0,   187,     0,   199,     0,   167,   168,
  610.    177,   178,    44,     0,     0,   169,   171,   173,   175,     0,
  611.     11,    16,    19,    29,     0,    25,     0,     0,     0,    42,
  612.     46,    48,    50,    51,    52,    53,    54,    55,    56,    57,
  613.     58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
  614.     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
  615.     78,    79,    80,    81,    83,    86,    88,    89,    90,    91,
  616.     92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
  617.    103,   104,   106,   107,   108,   109,   111,   112,   113,   114,
  618.    116,   118,   119,   120,     0,    44,   163,     0,   189,     0,
  619.    166,   159,    -2,   160,    -2,   161,     0,     0,     0,     0,
  620.      0,     0,    33,     0,    30,    23,    26,    35,    40,     0,
  621.    162,     0,   196,   197,   198,   164,    -2,   165,   188,   200,
  622.    179,   180,     0,   170,   172,   174,    28,     0,    84,     0,
  623.    190,     0,     0,   183,     0,     0,    31,   195,   181,   182,
  624.      0,     0,     0,   184,   185,   186 };
  625. typedef struct { char *t_name; int t_val; } yytoktype;
  626. #ifndef YYDEBUG
  627. #    define YYDEBUG    0    /* don't allow debugging */
  628. #endif
  629.  
  630. #if YYDEBUG
  631.  
  632. yytoktype yytoks[] =
  633. {
  634.     "IDENT",    257,
  635.     "INTLIT",    258,
  636.     "REALLIT",    259,
  637.     "STRINGLIT",    260,
  638.     "CSETLIT",    261,
  639.     "EOFX",    262,
  640.     "BREAK",    263,
  641.     "BY",    264,
  642.     "CASE",    265,
  643.     "CREATE",    266,
  644.     "DEFAULT",    267,
  645.     "DO",    268,
  646.     "DYNAMIC",    269,
  647.     "ELSE",    270,
  648.     "END",    271,
  649.     "EVERY",    272,
  650.     "FAIL",    273,
  651.     "GLOBAL",    274,
  652.     "IF",    275,
  653.     "INITIAL",    276,
  654.     "INVOCABLE",    277,
  655.     "LINK",    278,
  656.     "LOCAL",    279,
  657.     "NEXT",    280,
  658.     "NOT",    281,
  659.     "OF",    282,
  660.     "PROCEDURE",    283,
  661.     "RECORD",    284,
  662.     "REPEAT",    285,
  663.     "RETURN",    286,
  664.     "STATIC",    287,
  665.     "SUSPEND",    288,
  666.     "THEN",    289,
  667.     "TO",    290,
  668.     "UNTIL",    291,
  669.     "WHILE",    292,
  670.     "BANG",    293,
  671.     "MOD",    294,
  672.     "AUGMOD",    295,
  673.     "AND",    296,
  674.     "AUGAND",    297,
  675.     "STAR",    298,
  676.     "AUGSTAR",    299,
  677.     "INTER",    300,
  678.     "AUGINTER",    301,
  679.     "PLUS",    302,
  680.     "AUGPLUS",    303,
  681.     "UNION",    304,
  682.     "AUGUNION",    305,
  683.     "MINUS",    306,
  684.     "AUGMINUS",    307,
  685.     "DIFF",    308,
  686.     "AUGDIFF",    309,
  687.     "DOT",    310,
  688.     "SLASH",    311,
  689.     "AUGSLASH",    312,
  690.     "ASSIGN",    313,
  691.     "SWAP",    314,
  692.     "NMLT",    315,
  693.     "AUGNMLT",    316,
  694.     "REVASSIGN",    317,
  695.     "REVSWAP",    318,
  696.     "SLT",    319,
  697.     "AUGSLT",    320,
  698.     "SLE",    321,
  699.     "AUGSLE",    322,
  700.     "NMLE",    323,
  701.     "AUGNMLE",    324,
  702.     "NMEQ",    325,
  703.     "AUGNMEQ",    326,
  704.     "SEQ",    327,
  705.     "AUGSEQ",    328,
  706.     "EQUIV",    329,
  707.     "AUGEQUIV",    330,
  708.     "NMGT",    331,
  709.     "AUGNMGT",    332,
  710.     "NMGE",    333,
  711.     "AUGNMGE",    334,
  712.     "SGT",    335,
  713.     "AUGSGT",    336,
  714.     "SGE",    337,
  715.     "AUGSGE",    338,
  716.     "QMARK",    339,
  717.     "AUGQMARK",    340,
  718.     "AT",    341,
  719.     "AUGAT",    342,
  720.     "BACKSLASH",    343,
  721.     "CARET",    344,
  722.     "AUGCARET",    345,
  723.     "BAR",    346,
  724.     "CONCAT",    347,
  725.     "AUGCONCAT",    348,
  726.     "LCONCAT",    349,
  727.     "AUGLCONCAT",    350,
  728.     "TILDE",    351,
  729.     "NMNE",    352,
  730.     "AUGNMNE",    353,
  731.     "SNE",    354,
  732.     "AUGSNE",    355,
  733.     "NEQUIV",    356,
  734.     "AUGNEQUIV",    357,
  735.     "LPAREN",    358,
  736.     "RPAREN",    359,
  737.     "PCOLON",    360,
  738.     "COMMA",    361,
  739.     "MCOLON",    362,
  740.     "COLON",    363,
  741.     "SEMICOL",    364,
  742.     "LBRACK",    365,
  743.     "RBRACK",    366,
  744.     "LBRACE",    367,
  745.     "RBRACE",    368,
  746.     "-unknown-",    -1    /* ends search */
  747. };
  748.  
  749. char * yyreds[] =
  750. {
  751.     "-no such reduction-",
  752.     "program : decls EOFX",
  753.     "decls : /* empty */",
  754.     "decls : decls decl",
  755.     "decl : record",
  756.     "decl : proc",
  757.     "decl : global",
  758.     "decl : link",
  759.     "decl : invocable",
  760.     "link : LINK lnklist",
  761.     "lnklist : lnkfile",
  762.     "lnklist : lnklist COMMA lnkfile",
  763.     "lnkfile : IDENT",
  764.     "lnkfile : STRINGLIT",
  765.     "invocable : INVOCABLE invoclist",
  766.     "invoclist : invocop",
  767.     "invoclist : invoclist COMMA invocop",
  768.     "invocop : IDENT",
  769.     "invocop : STRINGLIT",
  770.     "invocop : STRINGLIT COLON INTLIT",
  771.     "global : GLOBAL",
  772.     "global : GLOBAL idlist",
  773.     "record : RECORD IDENT",
  774.     "record : RECORD IDENT LPAREN fldlist RPAREN",
  775.     "fldlist : /* empty */",
  776.     "fldlist : idlist",
  777.     "proc : prochead SEMICOL locals initial procbody END",
  778.     "prochead : PROCEDURE IDENT",
  779.     "prochead : PROCEDURE IDENT LPAREN arglist RPAREN",
  780.     "arglist : /* empty */",
  781.     "arglist : idlist",
  782.     "arglist : idlist LBRACK RBRACK",
  783.     "idlist : IDENT",
  784.     "idlist : idlist COMMA IDENT",
  785.     "locals : /* empty */",
  786.     "locals : locals retention idlist SEMICOL",
  787.     "retention : LOCAL",
  788.     "retention : STATIC",
  789.     "retention : DYNAMIC",
  790.     "initial : /* empty */",
  791.     "initial : INITIAL expr SEMICOL",
  792.     "procbody : /* empty */",
  793.     "procbody : nexpr SEMICOL procbody",
  794.     "nexpr : /* empty */",
  795.     "nexpr : expr",
  796.     "expr : expr1a",
  797.     "expr : expr AND expr1a",
  798.     "expr1a : expr1",
  799.     "expr1a : expr1a QMARK expr1",
  800.     "expr1 : expr2",
  801.     "expr1 : expr2 SWAP expr1",
  802.     "expr1 : expr2 ASSIGN expr1",
  803.     "expr1 : expr2 REVSWAP expr1",
  804.     "expr1 : expr2 REVASSIGN expr1",
  805.     "expr1 : expr2 AUGCONCAT expr1",
  806.     "expr1 : expr2 AUGLCONCAT expr1",
  807.     "expr1 : expr2 AUGDIFF expr1",
  808.     "expr1 : expr2 AUGUNION expr1",
  809.     "expr1 : expr2 AUGPLUS expr1",
  810.     "expr1 : expr2 AUGMINUS expr1",
  811.     "expr1 : expr2 AUGSTAR expr1",
  812.     "expr1 : expr2 AUGINTER expr1",
  813.     "expr1 : expr2 AUGSLASH expr1",
  814.     "expr1 : expr2 AUGMOD expr1",
  815.     "expr1 : expr2 AUGCARET expr1",
  816.     "expr1 : expr2 AUGNMEQ expr1",
  817.     "expr1 : expr2 AUGEQUIV expr1",
  818.     "expr1 : expr2 AUGNMGE expr1",
  819.     "expr1 : expr2 AUGNMGT expr1",
  820.     "expr1 : expr2 AUGNMLE expr1",
  821.     "expr1 : expr2 AUGNMLT expr1",
  822.     "expr1 : expr2 AUGNMNE expr1",
  823.     "expr1 : expr2 AUGNEQUIV expr1",
  824.     "expr1 : expr2 AUGSEQ expr1",
  825.     "expr1 : expr2 AUGSGE expr1",
  826.     "expr1 : expr2 AUGSGT expr1",
  827.     "expr1 : expr2 AUGSLE expr1",
  828.     "expr1 : expr2 AUGSLT expr1",
  829.     "expr1 : expr2 AUGSNE expr1",
  830.     "expr1 : expr2 AUGQMARK expr1",
  831.     "expr1 : expr2 AUGAND expr1",
  832.     "expr1 : expr2 AUGAT expr1",
  833.     "expr2 : expr3",
  834.     "expr2 : expr2 TO expr3",
  835.     "expr2 : expr2 TO expr3 BY expr3",
  836.     "expr3 : expr4",
  837.     "expr3 : expr4 BAR expr3",
  838.     "expr4 : expr5",
  839.     "expr4 : expr4 SEQ expr5",
  840.     "expr4 : expr4 SGE expr5",
  841.     "expr4 : expr4 SGT expr5",
  842.     "expr4 : expr4 SLE expr5",
  843.     "expr4 : expr4 SLT expr5",
  844.     "expr4 : expr4 SNE expr5",
  845.     "expr4 : expr4 NMEQ expr5",
  846.     "expr4 : expr4 NMGE expr5",
  847.     "expr4 : expr4 NMGT expr5",
  848.     "expr4 : expr4 NMLE expr5",
  849.     "expr4 : expr4 NMLT expr5",
  850.     "expr4 : expr4 NMNE expr5",
  851.     "expr4 : expr4 EQUIV expr5",
  852.     "expr4 : expr4 NEQUIV expr5",
  853.     "expr5 : expr6",
  854.     "expr5 : expr5 CONCAT expr6",
  855.     "expr5 : expr5 LCONCAT expr6",
  856.     "expr6 : expr7",
  857.     "expr6 : expr6 PLUS expr7",
  858.     "expr6 : expr6 DIFF expr7",
  859.     "expr6 : expr6 UNION expr7",
  860.     "expr6 : expr6 MINUS expr7",
  861.     "expr7 : expr8",
  862.     "expr7 : expr7 STAR expr8",
  863.     "expr7 : expr7 INTER expr8",
  864.     "expr7 : expr7 SLASH expr8",
  865.     "expr7 : expr7 MOD expr8",
  866.     "expr8 : expr9",
  867.     "expr8 : expr9 CARET expr8",
  868.     "expr9 : expr10",
  869.     "expr9 : expr9 BACKSLASH expr10",
  870.     "expr9 : expr9 AT expr10",
  871.     "expr9 : expr9 BANG expr10",
  872.     "expr10 : expr11",
  873.     "expr10 : AT expr10",
  874.     "expr10 : NOT expr10",
  875.     "expr10 : BAR expr10",
  876.     "expr10 : CONCAT expr10",
  877.     "expr10 : LCONCAT expr10",
  878.     "expr10 : DOT expr10",
  879.     "expr10 : BANG expr10",
  880.     "expr10 : DIFF expr10",
  881.     "expr10 : PLUS expr10",
  882.     "expr10 : STAR expr10",
  883.     "expr10 : SLASH expr10",
  884.     "expr10 : CARET expr10",
  885.     "expr10 : INTER expr10",
  886.     "expr10 : TILDE expr10",
  887.     "expr10 : MINUS expr10",
  888.     "expr10 : NMEQ expr10",
  889.     "expr10 : NMNE expr10",
  890.     "expr10 : SEQ expr10",
  891.     "expr10 : SNE expr10",
  892.     "expr10 : EQUIV expr10",
  893.     "expr10 : UNION expr10",
  894.     "expr10 : QMARK expr10",
  895.     "expr10 : NEQUIV expr10",
  896.     "expr10 : BACKSLASH expr10",
  897.     "expr11 : literal",
  898.     "expr11 : section",
  899.     "expr11 : return",
  900.     "expr11 : if",
  901.     "expr11 : case",
  902.     "expr11 : while",
  903.     "expr11 : until",
  904.     "expr11 : every",
  905.     "expr11 : repeat",
  906.     "expr11 : CREATE expr",
  907.     "expr11 : IDENT",
  908.     "expr11 : NEXT",
  909.     "expr11 : BREAK nexpr",
  910.     "expr11 : LPAREN exprlist RPAREN",
  911.     "expr11 : LBRACE compound RBRACE",
  912.     "expr11 : LBRACK exprlist RBRACK",
  913.     "expr11 : expr11 LBRACK exprlist RBRACK",
  914.     "expr11 : expr11 LBRACE RBRACE",
  915.     "expr11 : expr11 LBRACE pdcolist RBRACE",
  916.     "expr11 : expr11 LPAREN exprlist RPAREN",
  917.     "expr11 : expr11 DOT IDENT",
  918.     "expr11 : AND FAIL",
  919.     "expr11 : AND IDENT",
  920.     "while : WHILE expr",
  921.     "while : WHILE expr DO expr",
  922.     "until : UNTIL expr",
  923.     "until : UNTIL expr DO expr",
  924.     "every : EVERY expr",
  925.     "every : EVERY expr DO expr",
  926.     "repeat : REPEAT expr",
  927.     "return : FAIL",
  928.     "return : RETURN nexpr",
  929.     "return : SUSPEND nexpr",
  930.     "return : SUSPEND expr DO expr",
  931.     "if : IF expr THEN expr",
  932.     "if : IF expr THEN expr ELSE expr",
  933.     "case : CASE expr OF LBRACE caselist RBRACE",
  934.     "caselist : cclause",
  935.     "caselist : caselist SEMICOL cclause",
  936.     "cclause : DEFAULT COLON expr",
  937.     "cclause : expr COLON expr",
  938.     "exprlist : nexpr",
  939.     "exprlist : exprlist COMMA nexpr",
  940.     "pdcolist : nexpr",
  941.     "pdcolist : pdcolist COMMA nexpr",
  942.     "literal : INTLIT",
  943.     "literal : REALLIT",
  944.     "literal : STRINGLIT",
  945.     "literal : CSETLIT",
  946.     "section : expr11 LBRACK expr sectop expr RBRACK",
  947.     "sectop : COLON",
  948.     "sectop : PCOLON",
  949.     "sectop : MCOLON",
  950.     "compound : nexpr",
  951.     "compound : nexpr SEMICOL compound",
  952.     "program : error decls EOFX",
  953.     "proc : prochead error procbody END",
  954.     "expr : error",
  955. };
  956. #endif
  957. #line 1 "/usr/lib/yaccpar"
  958. /*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  959.  
  960. /*
  961. ** Skeleton parser driver for yacc output
  962. */
  963.  
  964. /*
  965. ** yacc user known macros and defines
  966. */
  967. #define YYERROR        goto yyerrlab
  968. #define YYACCEPT    { free(yys); free(yyv); return(0); }
  969. #define YYABORT        { free(yys); free(yyv); return(1); }
  970. #define YYBACKUP( newtoken, newvalue )\
  971. {\
  972.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  973.     {\
  974.         tsyserr("parser: syntax error - cannot backup" );\
  975.         goto yyerrlab;\
  976.     }\
  977.     yychar = newtoken;\
  978.     yystate = *yyps;\
  979.     yylval = newvalue;\
  980.     goto yynewstate;\
  981. }
  982. #define YYRECOVERING()    (!!yyerrflag)
  983. #ifndef YYDEBUG
  984. #    define YYDEBUG    1    /* make debugging available */
  985. #endif
  986.  
  987. /*
  988. ** user known globals
  989. */
  990. int yydebug;            /* set to 1 to get debugging */
  991.  
  992. /*
  993. ** driver internal defines
  994. */
  995. #define YYFLAG        (-1000)
  996.  
  997. /*
  998. ** static variables used by the parser
  999. */
  1000. static YYSTYPE *yyv;            /* value stack */
  1001. static int *yys;            /* state stack */
  1002.  
  1003. static YYSTYPE *yypv;            /* top of value stack */
  1004. static int *yyps;            /* top of state stack */
  1005.  
  1006. static int yystate;            /* current state */
  1007. static int yytmp;            /* extra var (lasts between blocks) */
  1008.  
  1009. int yynerrs;            /* number of errors */
  1010.  
  1011. int yyerrflag;            /* error recovery flag */
  1012. int yychar;            /* current input token number */
  1013.  
  1014.  
  1015. /*
  1016. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  1017. */
  1018. int
  1019. yyparse()
  1020. {
  1021.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  1022.     unsigned yymaxdepth = YYMAXDEPTH;
  1023.  
  1024.     /*
  1025.     ** Initialize externals - yyparse may be called more than once
  1026.     */
  1027.     yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  1028.     yys = (int*)malloc(yymaxdepth*sizeof(int));
  1029.     if (!yyv || !yys)
  1030.     {
  1031.         tsyserr("parser: out of memory" );
  1032.         return(1);
  1033.     }
  1034.     yypv = &yyv[-1];
  1035.     yyps = &yys[-1];
  1036.     yystate = 0;
  1037.     yytmp = 0;
  1038.     yynerrs = 0;
  1039.     yyerrflag = 0;
  1040.     yychar = -1;
  1041.  
  1042.     goto yystack;
  1043.     {
  1044.         register YYSTYPE *yy_pv;    /* top of value stack */
  1045.         register int *yy_ps;        /* top of state stack */
  1046.         register int yy_state;        /* current state */
  1047.         register int  yy_n;        /* internal state number info */
  1048.  
  1049.         /*
  1050.         ** get globals into registers.
  1051.         ** branch to here only if YYBACKUP was called.
  1052.         */
  1053.     yynewstate:
  1054.         yy_pv = yypv;
  1055.         yy_ps = yyps;
  1056.         yy_state = yystate;
  1057.         goto yy_newstate;
  1058.  
  1059.         /*
  1060.         ** get globals into registers.
  1061.         ** either we just started, or we just finished a reduction
  1062.         */
  1063.     yystack:
  1064.         yy_pv = yypv;
  1065.         yy_ps = yyps;
  1066.         yy_state = yystate;
  1067.  
  1068.         /*
  1069.         ** top of for (;;) loop while no reductions done
  1070.         */
  1071.     yy_stack:
  1072.         /*
  1073.         ** put a state and value onto the stacks
  1074.         */
  1075. #if YYDEBUG
  1076.         /*
  1077.         ** if debugging, look up token value in list of value vs.
  1078.         ** name pairs.  0 and negative (-1) are special values.
  1079.         ** Note: linear search is used since time is not a real
  1080.         ** consideration while debugging.
  1081.         */
  1082.         if ( yydebug )
  1083.         {
  1084.             register int yy_i;
  1085.  
  1086.             (void)printf( "State %d, token ", yy_state );
  1087.             if ( yychar == 0 )
  1088.                 (void)printf( "end-of-file\n" );
  1089.             else if ( yychar < 0 )
  1090.                 (void)printf( "-none-\n" );
  1091.             else
  1092.             {
  1093.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1094.                     yy_i++ )
  1095.                 {
  1096.                     if ( yytoks[yy_i].t_val == yychar )
  1097.                         break;
  1098.                 }
  1099.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1100.             }
  1101.         }
  1102. #endif
  1103.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  1104.         {
  1105.             /*
  1106.             ** reallocate and recover.  Note that pointers
  1107.             ** have to be reset, or bad things will happen
  1108.             */
  1109.             int yyps_index = (yy_ps - yys);
  1110.             int yypv_index = (yy_pv - yyv);
  1111.             int yypvt_index = (yypvt - yyv);
  1112.             yymaxdepth += YYMAXDEPTH;
  1113.             yyv = (YYSTYPE*)realloc((char*)yyv,
  1114.                 yymaxdepth * sizeof(YYSTYPE));
  1115.             yys = (int*)realloc((char*)yys,
  1116.                 yymaxdepth * sizeof(int));
  1117.             if (!yyv || !yys)
  1118.             {
  1119.                 tsyserr("parse stack overflow" );
  1120.                 return(1);
  1121.             }
  1122.             yy_ps = yys + yyps_index;
  1123.             yy_pv = yyv + yypv_index;
  1124.             yypvt = yyv + yypvt_index;
  1125.         }
  1126.         *yy_ps = yy_state;
  1127.         *++yy_pv = yyval;
  1128.  
  1129.         /*
  1130.         ** we have a new state - find out what to do
  1131.         */
  1132.     yy_newstate:
  1133.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1134.             goto yydefault;        /* simple state */
  1135. #if YYDEBUG
  1136.         /*
  1137.         ** if debugging, need to mark whether new token grabbed
  1138.         */
  1139.         yytmp = yychar < 0;
  1140. #endif
  1141.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1142.             yychar = 0;        /* reached EOF */
  1143. #if YYDEBUG
  1144.         if ( yydebug && yytmp )
  1145.         {
  1146.             register int yy_i;
  1147.  
  1148.             (void)printf( "Received token " );
  1149.             if ( yychar == 0 )
  1150.                 (void)printf( "end-of-file\n" );
  1151.             else if ( yychar < 0 )
  1152.                 (void)printf( "-none-\n" );
  1153.             else
  1154.             {
  1155.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1156.                     yy_i++ )
  1157.                 {
  1158.                     if ( yytoks[yy_i].t_val == yychar )
  1159.                         break;
  1160.                 }
  1161.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1162.             }
  1163.         }
  1164. #endif
  1165.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1166.             goto yydefault;
  1167.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1168.         {
  1169.             yychar = -1;
  1170.             yyval = yylval;
  1171.             yy_state = yy_n;
  1172.             if ( yyerrflag > 0 )
  1173.                 yyerrflag--;
  1174.             goto yy_stack;
  1175.         }
  1176.  
  1177.     yydefault:
  1178.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1179.         {
  1180. #if YYDEBUG
  1181.             yytmp = yychar < 0;
  1182. #endif
  1183.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1184.                 yychar = 0;        /* reached EOF */
  1185. #if YYDEBUG
  1186.             if ( yydebug && yytmp )
  1187.             {
  1188.                 register int yy_i;
  1189.  
  1190.                 (void)printf( "Received token " );
  1191.                 if ( yychar == 0 )
  1192.                     (void)printf( "end-of-file\n" );
  1193.                 else if ( yychar < 0 )
  1194.                     (void)printf( "-none-\n" );
  1195.                 else
  1196.                 {
  1197.                     for ( yy_i = 0;
  1198.                         yytoks[yy_i].t_val >= 0;
  1199.                         yy_i++ )
  1200.                     {
  1201.                         if ( yytoks[yy_i].t_val
  1202.                             == yychar )
  1203.                         {
  1204.                             break;
  1205.                         }
  1206.                     }
  1207.                     (void)printf( "%s\n", yytoks[yy_i].t_name );
  1208.                 }
  1209.             }
  1210. #endif
  1211.             /*
  1212.             ** look through exception table
  1213.             */
  1214.             {
  1215.                 register int *yyxi = yyexca;
  1216.  
  1217.                 while ( ( *yyxi != -1 ) ||
  1218.                     ( yyxi[1] != yy_state ) )
  1219.                 {
  1220.                     yyxi += 2;
  1221.                 }
  1222.                 while ( ( *(yyxi += 2) >= 0 ) &&
  1223.                     ( *yyxi != yychar ) )
  1224.                     ;
  1225.                 if ( ( yy_n = yyxi[1] ) < 0 )
  1226.                     YYACCEPT;
  1227.             }
  1228.         }
  1229.  
  1230.         /*
  1231.         ** check for syntax error
  1232.         */
  1233.         if ( yy_n == 0 )    /* have an error */
  1234.         {
  1235.             /* no worry about speed here! */
  1236.             switch ( yyerrflag )
  1237.             {
  1238.             case 0:        /* new error */
  1239.                 yyerror(yychar, yylval, yy_state );
  1240.                 goto skip_init;
  1241.             yyerrlab:
  1242.                 /*
  1243.                 ** get globals into registers.
  1244.                 ** we have a user generated syntax type error
  1245.                 */
  1246.                 yy_pv = yypv;
  1247.                 yy_ps = yyps;
  1248.                 yy_state = yystate;
  1249.                 yynerrs++;
  1250.             skip_init:
  1251.             case 1:
  1252.             case 2:        /* incompletely recovered error */
  1253.                     /* try again... */
  1254.                 yyerrflag = 3;
  1255.                 /*
  1256.                 ** find state where "error" is a legal
  1257.                 ** shift action
  1258.                 */
  1259.                 while ( yy_ps >= yys )
  1260.                 {
  1261.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1262.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  1263.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  1264.                         /*
  1265.                         ** simulate shift of "error"
  1266.                         */
  1267.                         yy_state = yyact[ yy_n ];
  1268.                         goto yy_stack;
  1269.                     }
  1270.                     /*
  1271.                     ** current state has no shift on
  1272.                     ** "error", pop stack
  1273.                     */
  1274. #if YYDEBUG
  1275. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1276.                     if ( yydebug )
  1277.                         (void)printf( _POP_, *yy_ps,
  1278.                             yy_ps[-1] );
  1279. #    undef _POP_
  1280. #endif
  1281.                     yy_ps--;
  1282.                     yy_pv--;
  1283.                 }
  1284.                 /*
  1285.                 ** there is no state on stack with "error" as
  1286.                 ** a valid shift.  give up.
  1287.                 */
  1288.                 YYABORT;
  1289.             case 3:        /* no shift yet; eat a token */
  1290. #if YYDEBUG
  1291.                 /*
  1292.                 ** if debugging, look up token in list of
  1293.                 ** pairs.  0 and negative shouldn't occur,
  1294.                 ** but since timing doesn't matter when
  1295.                 ** debugging, it doesn't hurt to leave the
  1296.                 ** tests here.
  1297.                 */
  1298.                 if ( yydebug )
  1299.                 {
  1300.                     register int yy_i;
  1301.  
  1302.                     (void)printf( "Error recovery discards " );
  1303.                     if ( yychar == 0 )
  1304.                         (void)printf( "token end-of-file\n" );
  1305.                     else if ( yychar < 0 )
  1306.                         (void)printf( "token -none-\n" );
  1307.                     else
  1308.                     {
  1309.                         for ( yy_i = 0;
  1310.                             yytoks[yy_i].t_val >= 0;
  1311.                             yy_i++ )
  1312.                         {
  1313.                             if ( yytoks[yy_i].t_val
  1314.                                 == yychar )
  1315.                             {
  1316.                                 break;
  1317.                             }
  1318.                         }
  1319.                         (void)printf( "token %s\n",
  1320.                             yytoks[yy_i].t_name );
  1321.                     }
  1322.                 }
  1323. #endif
  1324.                 if ( yychar == 0 )    /* reached EOF. quit */
  1325.                     YYABORT;
  1326.                 yychar = -1;
  1327.                 goto yy_newstate;
  1328.             }
  1329.         }/* end if ( yy_n == 0 ) */
  1330.         /*
  1331.         ** reduction by production yy_n
  1332.         ** put stack tops, etc. so things right after switch
  1333.         */
  1334. #if YYDEBUG
  1335.         /*
  1336.         ** if debugging, print the string that is the user's
  1337.         ** specification of the reduction which is just about
  1338.         ** to be done.
  1339.         */
  1340.         if ( yydebug )
  1341.             (void)printf( "Reduce by (%d) \"%s\"\n",
  1342.                 yy_n, yyreds[ yy_n ] );
  1343. #endif
  1344.         yytmp = yy_n;            /* value to switch over */
  1345.         yypvt = yy_pv;            /* $vars top of value stack */
  1346.         /*
  1347.         ** Look in goto table for next state
  1348.         ** Sorry about using yy_state here as temporary
  1349.         ** register variable, but why not, if it works...
  1350.         ** If yyr2[ yy_n ] doesn't have the low order bit
  1351.         ** set, then there is no action to be done for
  1352.         ** this reduction.  So, no saving & unsaving of
  1353.         ** registers done.  The only difference between the
  1354.         ** code just after the if and the body of the if is
  1355.         ** the goto yy_stack in the body.  This way the test
  1356.         ** can be made before the choice of what to do is needed.
  1357.         */
  1358.         {
  1359.             /* length of production doubled with extra bit */
  1360.             register int yy_len = yyr2[ yy_n ];
  1361.  
  1362.             if ( !( yy_len & 01 ) )
  1363.             {
  1364.                 yy_len >>= 1;
  1365.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1366.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1367.                     *( yy_ps -= yy_len ) + 1;
  1368.                 if ( yy_state >= YYLAST ||
  1369.                     yychk[ yy_state =
  1370.                     yyact[ yy_state ] ] != -yy_n )
  1371.                 {
  1372.                     yy_state = yyact[ yypgo[ yy_n ] ];
  1373.                 }
  1374.                 goto yy_stack;
  1375.             }
  1376.             yy_len >>= 1;
  1377.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1378.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1379.                 *( yy_ps -= yy_len ) + 1;
  1380.             if ( yy_state >= YYLAST ||
  1381.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1382.             {
  1383.                 yy_state = yyact[ yypgo[ yy_n ] ];
  1384.             }
  1385.         }
  1386.                     /* save until reenter driver code */
  1387.         yystate = yy_state;
  1388.         yyps = yy_ps;
  1389.         yypv = yy_pv;
  1390.     }
  1391.     /*
  1392.     ** code supplied by user is placed in this switch
  1393.     */
  1394.     switch( yytmp )
  1395.     {
  1396.         
  1397. case 1:
  1398. # line 160 "expanded.g"
  1399. {;} break;
  1400. case 4:
  1401. # line 165 "expanded.g"
  1402. {;} break;
  1403. case 5:
  1404. # line 166 "expanded.g"
  1405. {proc_lst->tree = yypvt[-0] ;} break;
  1406. case 6:
  1407. # line 167 "expanded.g"
  1408. {;} break;
  1409. case 7:
  1410. # line 168 "expanded.g"
  1411. {;} break;
  1412. case 8:
  1413. # line 169 "expanded.g"
  1414. {} break;
  1415. case 9:
  1416. # line 171 "expanded.g"
  1417. {;} break;
  1418. case 11:
  1419. # line 174 "expanded.g"
  1420. {;} break;
  1421. case 12:
  1422. # line 176 "expanded.g"
  1423. {lnkdcl(Str0(yypvt[-0])); ;} break;
  1424. case 13:
  1425. # line 177 "expanded.g"
  1426. {lnkdcl(Str0(yypvt[-0])); ;} break;
  1427. case 14:
  1428. # line 179 "expanded.g"
  1429. {;} break;
  1430. case 16:
  1431. # line 182 "expanded.g"
  1432. {;} break;
  1433. case 17:
  1434. # line 184 "expanded.g"
  1435. {invoc_grp(Str0(yypvt[-0])); ;} break;
  1436. case 18:
  1437. # line 185 "expanded.g"
  1438. {invocbl(yypvt[-0], -1); ;} break;
  1439. case 19:
  1440. # line 186 "expanded.g"
  1441. {invocbl(yypvt[-2], atoi(Str0(yypvt[-0]))); ;} break;
  1442. case 20:
  1443. # line 188 "expanded.g"
  1444. {idflag = F_Global ;} break;
  1445. case 21:
  1446. # line 188 "expanded.g"
  1447. {;} break;
  1448. case 22:
  1449. # line 190 "expanded.g"
  1450. {init_rec(Str0(yypvt[-0])); idflag = F_Field ;} break;
  1451. case 23:
  1452. # line 190 "expanded.g"
  1453. {
  1454.          ;
  1455.         } break;
  1456. case 24:
  1457. # line 194 "expanded.g"
  1458. {;} break;
  1459. case 25:
  1460. # line 195 "expanded.g"
  1461. {;} break;
  1462. case 26:
  1463. # line 197 "expanded.g"
  1464. {
  1465.         yyval = tree6(N_Proc,yypvt[-5],yypvt[-5],yypvt[-2],yypvt[-1],yypvt[-0]) ;
  1466.         } break;
  1467. case 27:
  1468. # line 201 "expanded.g"
  1469. {init_proc(Str0(yypvt[-0]));    idflag = F_Argument ;} break;
  1470. case 28:
  1471. # line 201 "expanded.g"
  1472. {
  1473.          ;
  1474.         } break;
  1475. case 29:
  1476. # line 205 "expanded.g"
  1477. {;} break;
  1478. case 30:
  1479. # line 206 "expanded.g"
  1480. {;} break;
  1481. case 31:
  1482. # line 207 "expanded.g"
  1483. {proc_lst->nargs = -proc_lst->nargs ;} break;
  1484. case 32:
  1485. # line 210 "expanded.g"
  1486. {
  1487.         install(Str0(yypvt[-0]),idflag) ;
  1488.         } break;
  1489. case 33:
  1490. # line 213 "expanded.g"
  1491. {
  1492.         install(Str0(yypvt[-0]),idflag) ;
  1493.         } break;
  1494. case 34:
  1495. # line 217 "expanded.g"
  1496. {;} break;
  1497. case 35:
  1498. # line 218 "expanded.g"
  1499. {;} break;
  1500. case 36:
  1501. # line 220 "expanded.g"
  1502. {idflag = F_Dynamic ;} break;
  1503. case 37:
  1504. # line 221 "expanded.g"
  1505. {idflag = F_Static ;} break;
  1506. case 38:
  1507. # line 222 "expanded.g"
  1508. {idflag = F_Dynamic ;} break;
  1509. case 39:
  1510. # line 224 "expanded.g"
  1511. {yyval = tree1(N_Empty)  ;} break;
  1512. case 40:
  1513. # line 225 "expanded.g"
  1514. {yyval = yypvt[-1] ;} break;
  1515. case 41:
  1516. # line 227 "expanded.g"
  1517. {yyval = tree1(N_Empty)  ;} break;
  1518. case 42:
  1519. # line 228 "expanded.g"
  1520. {yyval = tree4(N_Slist,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1521. case 43:
  1522. # line 230 "expanded.g"
  1523. {yyval = tree1(N_Empty)  ;} break;
  1524. case 46:
  1525. # line 234 "expanded.g"
  1526. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1527. case 48:
  1528. # line 237 "expanded.g"
  1529. {yyval = tree5(N_Scan,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1530. case 50:
  1531. # line 240 "expanded.g"
  1532. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1533. case 51:
  1534. # line 241 "expanded.g"
  1535. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1536. case 52:
  1537. # line 242 "expanded.g"
  1538. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1539. case 53:
  1540. # line 243 "expanded.g"
  1541. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1542. case 54:
  1543. # line 244 "expanded.g"
  1544. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1545. case 55:
  1546. # line 245 "expanded.g"
  1547. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1548. case 56:
  1549. # line 246 "expanded.g"
  1550. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1551. case 57:
  1552. # line 247 "expanded.g"
  1553. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1554. case 58:
  1555. # line 248 "expanded.g"
  1556. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1557. case 59:
  1558. # line 249 "expanded.g"
  1559. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1560. case 60:
  1561. # line 250 "expanded.g"
  1562. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1563. case 61:
  1564. # line 251 "expanded.g"
  1565. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1566. case 62:
  1567. # line 252 "expanded.g"
  1568. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1569. case 63:
  1570. # line 253 "expanded.g"
  1571. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1572. case 64:
  1573. # line 254 "expanded.g"
  1574. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1575. case 65:
  1576. # line 255 "expanded.g"
  1577. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1578. case 66:
  1579. # line 256 "expanded.g"
  1580. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1581. case 67:
  1582. # line 257 "expanded.g"
  1583. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1584. case 68:
  1585. # line 258 "expanded.g"
  1586. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1587. case 69:
  1588. # line 259 "expanded.g"
  1589. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1590. case 70:
  1591. # line 260 "expanded.g"
  1592. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1593. case 71:
  1594. # line 261 "expanded.g"
  1595. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1596. case 72:
  1597. # line 262 "expanded.g"
  1598. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1599. case 73:
  1600. # line 263 "expanded.g"
  1601. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1602. case 74:
  1603. # line 264 "expanded.g"
  1604. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1605. case 75:
  1606. # line 265 "expanded.g"
  1607. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1608. case 76:
  1609. # line 266 "expanded.g"
  1610. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1611. case 77:
  1612. # line 267 "expanded.g"
  1613. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1614. case 78:
  1615. # line 268 "expanded.g"
  1616. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1617. case 79:
  1618. # line 269 "expanded.g"
  1619. {yyval = tree5(N_Scan,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1620. case 80:
  1621. # line 270 "expanded.g"
  1622. {yyval = aug_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1623. case 81:
  1624. # line 271 "expanded.g"
  1625. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1626. case 83:
  1627. # line 274 "expanded.g"
  1628. {yyval = to_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1629. case 84:
  1630. # line 275 "expanded.g"
  1631. {yyval = toby_nd(yypvt[-3],yypvt[-4],yypvt[-2],yypvt[-0]) ;} break;
  1632. case 86:
  1633. # line 278 "expanded.g"
  1634. {yyval = tree4(N_Alt,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1635. case 88:
  1636. # line 281 "expanded.g"
  1637. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1638. case 89:
  1639. # line 282 "expanded.g"
  1640. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1641. case 90:
  1642. # line 283 "expanded.g"
  1643. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1644. case 91:
  1645. # line 284 "expanded.g"
  1646. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1647. case 92:
  1648. # line 285 "expanded.g"
  1649. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1650. case 93:
  1651. # line 286 "expanded.g"
  1652. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1653. case 94:
  1654. # line 287 "expanded.g"
  1655. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1656. case 95:
  1657. # line 288 "expanded.g"
  1658. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1659. case 96:
  1660. # line 289 "expanded.g"
  1661. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1662. case 97:
  1663. # line 290 "expanded.g"
  1664. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1665. case 98:
  1666. # line 291 "expanded.g"
  1667. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1668. case 99:
  1669. # line 292 "expanded.g"
  1670. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1671. case 100:
  1672. # line 293 "expanded.g"
  1673. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1674. case 101:
  1675. # line 294 "expanded.g"
  1676. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1677. case 103:
  1678. # line 297 "expanded.g"
  1679. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1680. case 104:
  1681. # line 298 "expanded.g"
  1682. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1683. case 106:
  1684. # line 301 "expanded.g"
  1685. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1686. case 107:
  1687. # line 302 "expanded.g"
  1688. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1689. case 108:
  1690. # line 303 "expanded.g"
  1691. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1692. case 109:
  1693. # line 304 "expanded.g"
  1694. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1695. case 111:
  1696. # line 307 "expanded.g"
  1697. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1698. case 112:
  1699. # line 308 "expanded.g"
  1700. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1701. case 113:
  1702. # line 309 "expanded.g"
  1703. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1704. case 114:
  1705. # line 310 "expanded.g"
  1706. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1707. case 116:
  1708. # line 313 "expanded.g"
  1709. {yyval = binary_nd(yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1710. case 118:
  1711. # line 316 "expanded.g"
  1712. {yyval = tree4(N_Limit,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1713. case 119:
  1714. # line 317 "expanded.g"
  1715. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1716. case 120:
  1717. # line 318 "expanded.g"
  1718. {yyval = tree4(N_Apply,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1719. case 122:
  1720. # line 321 "expanded.g"
  1721. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],tree1(N_Empty) ,yypvt[-0]) ;} break;
  1722. case 123:
  1723. # line 322 "expanded.g"
  1724. {yyval = tree3(N_Not,yypvt[-0],yypvt[-0]) ;} break;
  1725. case 124:
  1726. # line 323 "expanded.g"
  1727. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]) ;} break;
  1728. case 125:
  1729. # line 324 "expanded.g"
  1730. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]) ;} break;
  1731. case 126:
  1732. # line 325 "expanded.g"
  1733. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]) ;} break;
  1734. case 127:
  1735. # line 326 "expanded.g"
  1736. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1737. case 128:
  1738. # line 327 "expanded.g"
  1739. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1740. case 129:
  1741. # line 328 "expanded.g"
  1742. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1743. case 130:
  1744. # line 329 "expanded.g"
  1745. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1746. case 131:
  1747. # line 330 "expanded.g"
  1748. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1749. case 132:
  1750. # line 331 "expanded.g"
  1751. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1752. case 133:
  1753. # line 332 "expanded.g"
  1754. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1755. case 134:
  1756. # line 333 "expanded.g"
  1757. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1758. case 135:
  1759. # line 334 "expanded.g"
  1760. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1761. case 136:
  1762. # line 335 "expanded.g"
  1763. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1764. case 137:
  1765. # line 336 "expanded.g"
  1766. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1767. case 138:
  1768. # line 337 "expanded.g"
  1769. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1770. case 139:
  1771. # line 338 "expanded.g"
  1772. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1773. case 140:
  1774. # line 339 "expanded.g"
  1775. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1776. case 141:
  1777. # line 340 "expanded.g"
  1778. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1779. case 142:
  1780. # line 341 "expanded.g"
  1781. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1782. case 143:
  1783. # line 342 "expanded.g"
  1784. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1785. case 144:
  1786. # line 343 "expanded.g"
  1787. {yyval = MultiUnary(yypvt[-1],yypvt[-0]) ;} break;
  1788. case 145:
  1789. # line 344 "expanded.g"
  1790. {yyval = unary_nd(yypvt[-1],yypvt[-0]) ;} break;
  1791. case 155:
  1792. # line 355 "expanded.g"
  1793. {yyval = tree3(N_Create,yypvt[-1],yypvt[-0]);    proc_lst->has_coexpr = 1; ;} break;
  1794. case 156:
  1795. # line 356 "expanded.g"
  1796. {LSym0(yypvt[-0]) = putloc(Str0(yypvt[-0]),0) ;} break;
  1797. case 157:
  1798. # line 357 "expanded.g"
  1799. {yyval = tree2(N_Next,yypvt[-0]) ;} break;
  1800. case 158:
  1801. # line 358 "expanded.g"
  1802. {yyval = tree3(N_Break,yypvt[-1],yypvt[-0]) ;} break;
  1803. case 159:
  1804. # line 359 "expanded.g"
  1805. {if ((yypvt[-1])->n_type == N_Elist) yyval = invk_nd(yypvt[-2],tree1(N_Empty) ,yypvt[-1]); else yyval = yypvt[-1] ;} break;
  1806. case 160:
  1807. # line 360 "expanded.g"
  1808. {yyval = yypvt[-1] ;} break;
  1809. case 161:
  1810. # line 361 "expanded.g"
  1811. {yyval = list_nd(yypvt[-2],yypvt[-1]) ;} break;
  1812. case 162:
  1813. # line 362 "expanded.g"
  1814. {yyval = buildarray(yypvt[-3],yypvt[-2],yypvt[-1]) ;} break;
  1815. case 163:
  1816. # line 363 "expanded.g"
  1817. {yyval = invk_nd(yypvt[-1],yypvt[-2],list_nd(yypvt[-1],tree1(N_Empty) )) ;} break;
  1818. case 164:
  1819. # line 364 "expanded.g"
  1820. {yyval = invk_nd(yypvt[-2],yypvt[-3],list_nd(yypvt[-2],yypvt[-1])) ;} break;
  1821. case 165:
  1822. # line 365 "expanded.g"
  1823. {yyval = invk_nd(yypvt[-2],yypvt[-3],yypvt[-1]) ;} break;
  1824. case 166:
  1825. # line 366 "expanded.g"
  1826. {yyval = tree4(N_Field,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1827. case 167:
  1828. # line 367 "expanded.g"
  1829. {yyval = key_leaf(yypvt[-1],spec_str("fail")) ;} break;
  1830. case 168:
  1831. # line 368 "expanded.g"
  1832. {yyval = key_leaf(yypvt[-1],Str0(yypvt[-0])) ;} break;
  1833. case 169:
  1834. # line 370 "expanded.g"
  1835. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty) ) ;} break;
  1836. case 170:
  1837. # line 371 "expanded.g"
  1838. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]) ;} break;
  1839. case 171:
  1840. # line 373 "expanded.g"
  1841. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty) ) ;} break;
  1842. case 172:
  1843. # line 374 "expanded.g"
  1844. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]) ;} break;
  1845. case 173:
  1846. # line 376 "expanded.g"
  1847. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty) ) ;} break;
  1848. case 174:
  1849. # line 377 "expanded.g"
  1850. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]) ;} break;
  1851. case 175:
  1852. # line 379 "expanded.g"
  1853. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty) ) ;} break;
  1854. case 176:
  1855. # line 381 "expanded.g"
  1856. {yyval = tree4(N_Ret,yypvt[-0],yypvt[-0],tree1(N_Empty) ) ;} break;
  1857. case 177:
  1858. # line 382 "expanded.g"
  1859. {yyval = tree4(N_Ret,yypvt[-1],yypvt[-1],yypvt[-0]) ;} break;
  1860. case 178:
  1861. # line 383 "expanded.g"
  1862. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty) ) ;} break;
  1863. case 179:
  1864. # line 384 "expanded.g"
  1865. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]) ;} break;
  1866. case 180:
  1867. # line 386 "expanded.g"
  1868. {yyval = tree5(N_If,yypvt[-3],yypvt[-2],yypvt[-0],tree1(N_Empty) ) ;} break;
  1869. case 181:
  1870. # line 387 "expanded.g"
  1871. {yyval = tree5(N_If,yypvt[-5],yypvt[-4],yypvt[-2],yypvt[-0]) ;} break;
  1872. case 182:
  1873. # line 389 "expanded.g"
  1874. {yyval = case_nd(yypvt[-5],yypvt[-4],yypvt[-1]) ;} break;
  1875. case 184:
  1876. # line 392 "expanded.g"
  1877. {yyval = tree4(N_Clist,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1878. case 185:
  1879. # line 394 "expanded.g"
  1880. {yyval = tree4(N_Ccls,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1881. case 186:
  1882. # line 395 "expanded.g"
  1883. {yyval = tree4(N_Ccls,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1884. case 187:
  1885. # line 397 "expanded.g"
  1886. {yyval = yypvt[-0]; ;} break;
  1887. case 188:
  1888. # line 398 "expanded.g"
  1889. {yyval = tree4(N_Elist,yypvt[-1],yypvt[-2],yypvt[-0]); ;} break;
  1890. case 189:
  1891. # line 400 "expanded.g"
  1892. {
  1893.         yyval = tree3(N_Create,yypvt[-0],yypvt[-0]);    proc_lst->has_coexpr = 1; ;
  1894.         } break;
  1895. case 190:
  1896. # line 403 "expanded.g"
  1897. {
  1898.         yyval =tree4(N_Elist,yypvt[-1],yypvt[-2],tree3(N_Create,yypvt[-1],yypvt[-0]));    proc_lst->has_coexpr = 1; ;
  1899.         } break;
  1900. case 191:
  1901. # line 407 "expanded.g"
  1902. {CSym0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_IntLit,0) ;} break;
  1903. case 192:
  1904. # line 408 "expanded.g"
  1905. {CSym0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_RealLit,0) ;} break;
  1906. case 193:
  1907. # line 409 "expanded.g"
  1908. {CSym0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_StrLit,(int)Val1(yypvt[-0])) ;} break;
  1909. case 194:
  1910. # line 410 "expanded.g"
  1911. {CSym0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_CsetLit,(int)Val1(yypvt[-0])) ;} break;
  1912. case 195:
  1913. # line 412 "expanded.g"
  1914. {yyval = sect_nd(yypvt[-2],yypvt[-5],yypvt[-3],yypvt[-1]) ;} break;
  1915. case 196:
  1916. # line 414 "expanded.g"
  1917. {yyval = yypvt[-0] ;} break;
  1918. case 197:
  1919. # line 415 "expanded.g"
  1920. {yyval = yypvt[-0] ;} break;
  1921. case 198:
  1922. # line 416 "expanded.g"
  1923. {yyval = yypvt[-0] ;} break;
  1924. case 200:
  1925. # line 419 "expanded.g"
  1926. {yyval = tree4(N_Slist,yypvt[-1],yypvt[-2],yypvt[-0]) ;} break;
  1927.     }
  1928.     goto yystack;        /* reset registers in driver code */
  1929. }
  1930.